/**
 * @file tsk_task_queue.h
 * @brief tskp库 - 任务队列模块头文件
 * @details
 * 本文件声明了tskp任务调参库的任务队列结构体及相关操作接口。
 * 任务队列用于任务调度的缓存与管理，采用静态循环队列结构，适合嵌入式、实时系统下的高效任务调度。
 *
 * 作者：小傲（个人开发）
 * 邮箱：2655640770@qq.com
 * 版权声明：开源公开，欢迎建议与反馈
 * 日期：2025-09-11
 */

#ifndef _TSK_TASK_QUEUE_H_
#define _TSK_TASK_QUEUE_H_

#include "tsk_misc.h"           //参数

#ifdef _TSK_TSKP_

typedef enum{
    TSK_TASK_QUEUE_EMPTY,       //队列空
    TSK_TASK_QUEUE_FULL,        //队列满
    TSK_TASK_QUEUE_OK           //操作成功
}tsk_task_queue_enum_t;         //任务队列操作结果

typedef struct{
    tsk_Parsed_t task_ids[TSK_MAX_TASKS_PER_QUEUE];     //任务队列
    int front;                                          //头指针
    int rear;                                           //尾指针
    int count;                                          //队列内任务数
}tsk_task_Queue_t;                                      //任务队列

void tsk_task_Queue_Init(tsk_task_Queue_t* p);
bool tsk_is_task_Queue_Empty(tsk_task_Queue_t p);
bool tsk_is_task_Queue_Full(tsk_task_Queue_t p);
tsk_task_queue_enum_t Tsk_task_Queue_Push(tsk_task_Queue_t *p,tsk_Parsed_t data);
tsk_task_queue_enum_t Tsk_task_Queue_Pop(tsk_task_Queue_t *p,tsk_Parsed_t *temp);

#endif // _TSK_TSKP_

#endif
